home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / ead / ead28.dms / ead28.adf / Listati / TurboTopaz.asm / TurboTopaz.asm
Assembly Source File  |  1991-03-10  |  25KB  |  546 lines

  1. ; ************************************************************************
  2.  
  3. ; Programma .............. TurboTopaz
  4.  
  5. ; Autore ................. Preben Nielsen
  6.  
  7. ; Linguaggio ............. HiSoft Devpac V2.14
  8.  
  9. ; Funzione ............... Acceleratore di testo
  10.  
  11. ; Note ................... Revisione ed adattamento di Luigi Callegari
  12.  
  13. ; ************************************************************************
  14.  
  15.         OPT O+                            ; Attiva ottimizzatore di codice
  16.  
  17.         incdir  "INCLUDEASS:"             ; Specifica dove trovare inclusioni
  18.         include "exec/memory.i"
  19.         include "exec/exec_lib.i"
  20.         include "graphics/rastport.i"
  21.         include "graphics/text.i"
  22.         include "graphics/graphics_lib.i"
  23.         include "intuition/intuition.i"
  24.         include "libraries/dos.i"
  25.         include "libraries/dos_lib.i"
  26.         include "libraries/diskfont.i"
  27.         include "libraries/diskfont_lib.i"
  28.         include "libraries/dosextens.i"
  29.         include "Workbench/startup.i"
  30.         include "Workbench/workbench.i"
  31.         include "Workbench/icon_lib.i"
  32.  
  33. LF              =10
  34.  
  35. LoadBase        MACRO
  36.                 IFNC            '\1','ExecBase'
  37.                 movea.l         \1(PC),A6
  38.                 ENDC
  39.                 IFC             '\1','ExecBase'
  40.                 movea.l         4.W,A6
  41.                 ENDC
  42.                 ENDM
  43. CallLib         MACRO
  44.                 jsr             _LVO\1(A6)
  45.                 ENDM
  46. Call            MACRO
  47.                 bsr             \1
  48.                 ENDM
  49. Push            MACRO
  50.                 movem.l         \1,-(SP)
  51.                 ENDM
  52. Pop             MACRO
  53.                 movem.l         (SP)+,\1
  54.                 ENDM
  55.  
  56. Arg             EQUR            A4
  57. ArgLen          EQUR            D4
  58. Installed       EQUR            D7
  59.  
  60. Start           Push            D0-D7/A0-A6
  61.                 move.l          D0,ArgLen
  62.                 move.l          A0,Arg
  63.                 LoadBase        ExecBase
  64.                 lea             DosName(PC),A1
  65.                 CallLib         OldOpenLibrary
  66.                 move.l          D0,DosBase
  67.                 beq             Exit
  68.                 lea             GfxName(PC),A1
  69.                 CallLib         OldOpenLibrary
  70.                 move.l          D0,GfxBase
  71.                 beq             Exit
  72.                 LoadBase        GfxBase
  73.                 lea             FontAttr(PC),A0
  74.                 CallLib         OpenFont
  75.                 move.l          D0,TFont
  76.                 move.l          D0,FontCheck+2          ;Fa 'cmp.l #Font,52(A1)'
  77.                 beq             Exit
  78. FindFunc        LoadBase        ExecBase
  79.                 lea             PortName(PC),A1
  80.                 CallLib         FindPort                ;Siamo installati ?
  81.                 move.l          D0,Installed
  82.                 suba.l          A1,A1
  83.                 CallLib         FindTask                ;Troviamoci
  84.                 movea.l         D0,A2
  85.                 tst.l           pr_CLI(A2)
  86.                 bne.S           CLIStartup
  87. WBenchStartup   lea             pr_MsgPort(A2),A0
  88.                 CallLib         WaitPort                ;Attende un messaggio
  89.                 lea             pr_MsgPort(A2),A0
  90.                 CallLib         GetMsg                  ;Legge il messaggio
  91.                 move.l          D0,WBenchMsg            ;Salva per recuperarlo
  92.                 tst.l           Installed               ;Installa o rimuovi?
  93.                 bne.S           CLIAndWBStartup
  94.                 moveq           #0,ArgLen               ;Segnala niente argomenti ancora?
  95.                 move.l          D0,A2
  96.                 move.l          sm_NumArgs(A2),D0       ;Qualche argomento?
  97.                 move.l          sm_ArgList(A2),A2
  98.                 subq.l          #1,D0
  99.                 blt.S           CLIAndWBStartup
  100.                 beq.S           FoundArg
  101.                 addq.w          #wa_SIZEOF,A2
  102. FoundArg        move.l          wa_Lock(A2),D1
  103.                 move.l          wa_Name(A2),A2          ;Nome dell'icona
  104.                 beq.S           NoLock
  105.                 LoadBase        DosBase
  106.                 CallLib         CurrentDir
  107. NoLock          LoadBase        ExecBase
  108.                 lea             IconName(PC),A1
  109.                 CallLib         OldOpenLibrary
  110.                 move.l          D0,IconBase
  111.                 beq.S           CLIAndWBStartup
  112.                 LoadBase        IconBase
  113.                 move.l          A2,A0
  114.                 CallLib         GetDiskObject           ;Legge l'icona
  115.                 move.l          D0,DiskObj
  116.                 beq.S           CLIAndWBStartup
  117.                 move.l          D0,A2
  118.                 move.l          do_ToolTypes(A2),A0
  119.                 lea             FontTxt(PC),A1
  120.                 CallLib         FindToolType            ;Trova 'FONT=??????'
  121.                 move.l          D0,Arg
  122.                 move.l          D0,ArgLen               ;Segnala se argomenti
  123.                 bra.S           CLIAndWBStartup
  124. CLIStartup      subq.l          #1,ArgLen
  125.                 clr.b           0(Arg,ArgLen)
  126. CLIAndWBStartup tst.l           Installed               ;Installa o rimuove?
  127.                 beq.S           Install
  128.  
  129. Remove          move.l          Installed,A1
  130.                 lea             MyText-MyPort(A1),A1    ;Inizio funzione Text()
  131.                 move.l          GfxBase(PC),A0
  132.                 cmpa.l          _LVOText+2(A0),A1
  133.                 lea             AlteredTxt(PC),A1
  134.                 bne             Write2Lines
  135.                 move.l          Installed,A1
  136.                 CallLib         RemPort
  137.                 move.l          Installed,A0
  138.                 CallLib         Forbid
  139.                 move.w          #NFuncEnd-NFunc,D0
  140.                 lea             NFunc(PC),A1
  141.                 lea             NFunc-MyPort(A0),A0     ;Memoria allocata
  142.                 Call            MemCopy
  143.                 movea.w         #_LVOText,A0
  144.                 movea.l         GfxBase(PC),A1
  145.                 move.l          OldFunc+2(PC),D0        ;Funzione da ripristinare
  146.                 CallLib         SetFunction             ;Installa vecchia funzione
  147.                 tst.l           OFont                   ;Stavamo usando Topaz-80 standard
  148.                 beq.S           DoneResFont
  149.                 move.l          TFont(PC),A1            ;Ripristina Topaz-80
  150.                 lea             tf_YSize(A1),A1
  151.                 lea             TopazMisc(PC),A0
  152.                 moveq           #tf_SIZEOF-tf_YSize,D0
  153.                 move.w          tf_Accessors(A1),D1
  154.                 Call            MemCopy
  155.                 move.w          D1,tf_Accessors(A1)
  156. DoneResFont     CallLib         Permit
  157.                 lea             RemovedTxt(PC),A1
  158.                 bra             Write2Lines
  159.  
  160. Install         tst.l           ArgLen
  161.                 ble             DoneLoadFont
  162.                 move.l          Arg,FontAttr
  163.                 LoadBase        GfxBase
  164.                 lea             FontAttr(PC),A0
  165.                 move.b          #FPB_DISKFONT,ta_Flags(A0)
  166.                 CallLib         OpenFont
  167.                 tst.l           D0
  168.                 bne.S           FoundFont
  169.                 LoadBase        ExecBase
  170.                 lea             DFName(PC),A1
  171.                 CallLib         OldOpenLibrary
  172.                 lea             NoLibTxt(PC),A1
  173.                 move.b          #LF,35(A1)              ;Fissa un LF
  174.                 move.l          D0,DFBase
  175.                 beq             Write2Lines
  176.                 LoadBase        DFBase
  177.                 lea             FontAttr(PC),A0
  178.                 CallLib         OpenDiskFont
  179.                 move.l          D0,D7
  180.                 LoadBase        ExecBase
  181.                 movea.l         DFBase(PC),A1
  182.                 CallLib         CloseLibrary
  183.                 move.l          D7,D0
  184. FoundFont       move.l          D0,OFont
  185.                 lea             NoFontTxt(PC),A1
  186.                 beq             Write2Lines
  187.                 move.l          D0,A0
  188.                 move.l          TFont(PC),A2
  189.                 moveq           #8,D0
  190.                 lea             Not8x8Txt(PC),A1
  191.                 cmp.w           tf_YSize(A0),D0
  192.                 bne             Write2Lines
  193.                 cmp.w           tf_XSize(A0),D0
  194.                 bne             Write2Lines
  195.                 lea             Mismatch(PC),A1
  196.                 move.w          tf_Baseline(A0),D0
  197.                 cmp.w           tf_Baseline(A2),D0
  198.                 bne             Write2Lines
  199.                 lea             CantUseProp(PC),A1
  200.                 btst            #FPB_PROPORTIONAL,tf_Flags(A0)
  201.                 bne             Write2Lines
  202. DoneLoadFont    LoadBase        ExecBase
  203.                 move.l          #BufMem,D0
  204.                 move.l          #MEMF_CHIP!MEMF_CLEAR,D1
  205.                 CallLib         AllocMem                ;Alloca memoria per Text() temporaneo
  206.                 lea             NoMemTxt(PC),A1
  207.                 move.l          D0,BMem
  208.                 beq             Write2Lines
  209.                 move.l          #FuncMem+CharMem,D0
  210.                 move.l          #MEMF_PUBLIC!MEMF_CLEAR,D1
  211.                 CallLib         AllocMem                ;Alloca memoria per funzione
  212.                 lea             NoMemTxt(PC),A1
  213.                 move.l          D0,FMem
  214.                 beq             Write2Lines
  215.                 CallLib         Forbid
  216.                 tst.l           OFont
  217.                 beq.S           DoneRepFont             ;Dobbiamo usare Topaz-80 non modificata
  218.                 move.l          TFont(PC),A0            ;Salva qualcosa da Topaz-80
  219.                 lea             tf_YSize(A0),A0
  220.                 lea             TopazMisc(PC),A1
  221.                 moveq           #tf_SIZEOF-tf_YSize,D0
  222.                 Call            MemCopy
  223.                 move.l          OFont(PC),A0            ;Sovrascrive Topaz-80
  224.                 lea             tf_YSize(A0),A0
  225.                 move.l          TFont(PC),A1
  226.                 lea             tf_YSize(A1),A1
  227.                 moveq           #tf_SIZEOF-tf_YSize,D0
  228.                 move.w          tf_Accessors(A1),D1
  229.                 Call            MemCopy
  230.                 move.w          D1,tf_Accessors(A1)
  231. DoneRepFont     move.l          TFont(PC),A0
  232.                 move.w          tf_Baseline(A0),D0
  233.                 andi.w          #%0000000000000111,D0
  234.                 lsl.w           #8,D0
  235.                 lsl.w           #1,D0
  236.                 ori.w           #%0101000101000011,D0
  237.                 move.w          D0,SubBaseLine          ;Fatto subq.w tf_baseline,D3
  238.                 move.w          tf_Modulo(A0),D1
  239.                 moveq           #0,D5
  240.                 moveq           #0,D6
  241.                 move.b          tf_LoChar(A0),D5
  242.                 move.b          tf_HiChar(A0),D6
  243.                 movea.l         tf_CharData(A0),A1
  244.                 movea.l         tf_CharLoc(A0),A2
  245.                 movea.l         FMem(PC),A0
  246.                 lea             FontData-NFunc(A0),A0
  247.                 moveq           #0,D7                   ;Caratteri fittizi da 0 a tf_LoChar-1
  248. LowLoop         cmp.w           D5,D7
  249.                 bge.S           MidLoop
  250.                 move.l          D6,D0
  251.                 sub.l           D5,D0
  252.                 addq.l          #1,D0
  253.                 Call            CopyChar
  254.                 addq.l          #1,D7
  255.                 bra.S           LowLoop
  256. MidLoop         cmp.w           D6,D7                   ;Caratteri reali da tf_LoChar a tf_HiChar
  257.                 bgt.S           HighLoop
  258.                 move.l          D7,D0
  259.                 sub.l           D5,D0
  260.                 Call            CopyChar
  261.                 addq.l          #1,D7
  262.                 bra.S           MidLoop
  263. HighLoop        cmpi.w          #255,D7                 ;Caratteri fittizi da tf_HiChar a 255
  264.                 bgt.S           InstallFunction
  265.                 move.l          D6,D0
  266.                 sub.l           D5,D0
  267.                 addq.l          #1,D0
  268.                 Call            CopyChar
  269.                 addq.l          #1,D7
  270.                 bra.S           HighLoop
  271. InstallFunction
  272.                 move.w          #NFuncEnd-NFunc,D0
  273.                 lea             NFunc(PC),A0
  274.                 movea.l         FMem(PC),A1
  275.                 movea.l         A1,A2
  276.                 Call            MemCopy
  277.                 LoadBase        ExecBase
  278.                 lea             MyPort-NFunc(A2),A1
  279.                 lea             PortName-NFunc(A2),A0
  280.                 move.l          A0,10(A1)               ;Fissa nome porta
  281.                 CallLib         AddPort         
  282.                 moveq           #MyText-NFunc,D0
  283.                 add.l           A2,D0
  284.                 lea             FontCheck+2-NFunc(A2),A1
  285.                 move.l          A1,LockFunc+2-NFunc(A2)                 ;\
  286.                 move.l          A1,UnLockFunc+2-NFunc(A2)               ; \Modifica codice assoluto
  287.                 move.l          GfxBase(PC),A1                          ; /
  288.                 move.l          _LVOText+2(A1),OldFunc+2-NFunc(A2)      ;/Salva indirizzo vecchia Text()
  289.                 move.w          #_LVOText,A0
  290.                 CallLib         SetFunction
  291.                 move.l          D0,OldFunc+2-NFunc(A2)  ;Salva indirizzo vecchia Text()
  292.                 clr.l           BMem                    ;\
  293.                 clr.l           FMem                    ; >Non liberare RAM sinchè non rilanciato
  294.                 clr.l           OFont                   ;/
  295.                 CallLib         Permit
  296.                 lea             FontName(PC),A1
  297.                 move.l          FontAttr(PC),A0
  298. CopyFName       move.b          (A0)+,(A1)+
  299.                 bne.S           CopyFName
  300.                 move.b          #LF,-1(A1)
  301.                 clr.b           (A1)
  302.                 lea             InstalledTxt(PC),A1
  303. Write2Lines     Call            OpenCON                 ;A0/A1=First/Second line
  304.                 lea             NameOfFunc(PC),A0
  305.                 Call            WriteCON
  306.                 move.l          A1,A0
  307.                 Call            WriteCON
  308.                 Call            CloseCON
  309.                 bra.S           Exit
  310.  
  311. ;D0=character to copy (0-256)
  312. ;D1=tf_Modulo
  313. ;A0=where to put character
  314. ;A1=tf_CharData
  315. ;A2=tf_CharLoc
  316. CopyChar        lsl.w           #2,D0
  317.                 move.w          (A2,D0),D0              ;D0=bitoffset into tf_CharData
  318.                 lsr.w           #3,D0                   ;D0=byteOffset info tf_CharData
  319.                 lea             0(A1,D0.W),A3           ;Here is the character bitmap
  320.                 moveq           #7,D0
  321. CharLoop        move.b          (A3),(A0)+
  322.                 adda.w          D1,A3
  323.                 dbf             D0,CharLoop
  324.                 rts
  325.  
  326. Exit
  327. FreeTopaz       LoadBase        GfxBase
  328.                 move.l          TFont(PC),D0
  329.                 beq.S           FreeFont
  330.                 movea.l         D0,A1
  331.                 CallLib         CloseFont
  332. FreeFont        move.l          OFont(PC),D0
  333.                 beq.S           FreeBMem
  334.                 movea.l         D0,A1
  335.                 CallLib         CloseFont
  336. FreeBMem        LoadBase        ExecBase
  337.                 move.l          BMem(PC),D0
  338.                 beq.S           FreeFMem
  339.                 movea.l         D0,A1
  340.                 move.l          #BufMem,D0
  341.                 CallLib         FreeMem                 ;Free temporary buffer
  342. FreeFMem        move.l          FMem(PC),D0
  343.                 beq.S           FreeGfx
  344.                 movea.l         D0,A1
  345.                 move.l          #FuncMem+CharMem,D0
  346.                 CallLib         FreeMem                 ;Free function and character memory
  347. FreeGfx         move.l          GfxBase(PC),D0
  348.                 beq.S           FreeDos
  349.                 movea.l         D0,A1
  350.                 CallLib         CloseLibrary
  351. FreeDos         move.l          DosBase(PC),D0
  352.                 beq.S           Flush
  353.                 movea.l         D0,A1
  354.                 CallLib         CloseLibrary
  355. Flush           moveq           #0,D1                   ;Flush unused libs, fonts etc.
  356.                 move.l          #$FFFFFF,d0
  357.                 CallLib         AllocMem
  358. ReplyWB         move.l          WBenchMsg(PC),D0
  359.                 beq.S           AllDone
  360.                 move.l          DiskObj(PC),D0
  361.                 beq.S           FreeIcon
  362.                 move.l          D0,A0
  363.                 LoadBase        IconBase
  364.                 CallLib         FreeDiskObject
  365. FreeIcon        LoadBase        ExecBase        
  366.                 move.l          IconBase(PC),D0
  367.                 beq.S           WBEnd
  368.                 move.l          D0,A1
  369.                 CallLib         CloseLibrary
  370. WBEnd           CallLib         Forbid
  371.                 movea.l         WBenchMsg(PC),A1
  372.                 CallLib         ReplyMsg                ;Reply WBenchMessage if we are started from WB
  373. AllDone         Pop             D0-D7/A0-A6
  374.                 moveq           #0,D0
  375.                 rts
  376.  
  377. OpenCON         Push            D0-D7/A0-A6
  378.                 LoadBase        DosBase
  379.                 tst.l           WBenchMsg
  380.                 beq.S           FromCLI
  381. FromWB          move.l          #CONName,D1
  382.                 move.l          #MODE_OLDFILE,D2
  383.                 CallLib         Open
  384.                 bra.S           DoneOpen
  385. FromCLI         CallLib         Output
  386. DoneOpen        move.l          D0,Handle
  387.                 bra.S           DoneCON
  388. ;A0=NULL terminated text to write
  389. WriteCON        Push            D0-D7/A0-A6
  390.                 LoadBase        DosBase
  391.                 move.l          Handle(PC),D1
  392.                 beq.S           DoneCON
  393.                 move.l          A0,D2
  394.                 moveq           #-1,D3
  395. strlenLoop      addq.l          #1,D3
  396.                 tst.b           (A0)+
  397.                 bne.S           strlenLoop
  398.                 CallLib         Write
  399.                 bra.S           DoneCON
  400. CloseCON        Push            D0-D7/A0-A6
  401.                 LoadBase        DosBase
  402.                 move.l          Handle(PC),D2
  403.                 beq.S           DoneCON
  404.                 tst.l           WBenchMsg
  405.                 beq.S           DoneCON
  406.                 move.l          #150,D1
  407.                 CallLib         Delay
  408.                 move.l          D2,D1
  409.                 CallLib         Close
  410. DoneCON         Pop             D0-D7/A0-A6
  411.                 rts
  412.  
  413. ;A0=Source, A1=Dest, D0:16=count
  414. MemCopy         Push            D0/A0-A1
  415.                 subq.w          #1,D0
  416. MemLoop         move.b          (A0)+,(A1)+
  417.                 dbf             D0,MemLoop
  418.                 Pop             D0/A0-A1
  419.                 rts
  420.  
  421. ;================ Here comes the new Text-Function =================
  422. Rp              EQUR            A1
  423. BData           EQUR            A2
  424. Buf             EQUR            A3
  425. CharData        EQUR            A4
  426.  
  427. ;D0=count       D1=ascii        D2=x            D3=y
  428. ;D4=count       D5=temp. A4     D6=not used     D7=not used
  429. ;A0=string      A1=RastPort     A2=bitmap data  A3=temp buffer
  430. ;A4=CharData    A5=layer        A6=GfxBase      A7=SP
  431. * Put the code between NFunc and NFuncEnd
  432. NFunc
  433. OldFunc         jmp             12345678                ;This instruction will be changed by the installation
  434. MyText          tst.b           rp_AlgoStyle(Rp)        ;We can only write strings with style 0
  435.                 bne.S           OldFunc
  436.                 cmpi.w          #MaxL,D0                ;Is string too long for this MyText
  437.                 bgt.S           OldFunc
  438. FontCheck       cmp.l           #12345678,rp_Font(Rp)   ;This instruction will be changed by the installation
  439.                 bne.S           OldFunc
  440. LockFunc        not.w           12345678                ;This instruction will be changed by the installation
  441.                 Push            D2-D5/A2-A5
  442.                 move.l          D0,D4
  443.                 beq.S           UnLockFunc
  444.                 move.l          (Rp),D1
  445.                 move.l          D1,A5
  446.                 beq.S           LetsWrite
  447.                 CallLib         LockLayerRom            ;Commodore says this doesn't destroy registers
  448. LetsWrite       move.l          BMem(PC),Buf            ;Get BMem pointer
  449.                 move.l          Buf,D5
  450.                 lea             FontData(PC),CharData
  451.                 subq.w          #1,D0
  452. MoveChar        moveq           #0,D1
  453.                 move.b          (A0)+,D1
  454.                 asl.w           #3,D1
  455.                 movea.l         CharData,BData
  456.                 adda.w          D1,BData                ;Find bitmap-data
  457.                 move.b          (BData)+,(Buf)+
  458.                 move.b          (BData)+,1*MaxL-1(Buf)
  459.                 move.b          (BData)+,2*MaxL-1(Buf)
  460.                 move.b          (BData)+,3*MaxL-1(Buf)
  461.                 move.b          (BData)+,4*MaxL-1(Buf)
  462.                 move.b          (BData)+,5*MaxL-1(Buf)
  463.                 move.b          (BData)+,6*MaxL-1(Buf)
  464.                 move.b          (BData)+,7*MaxL-1(Buf)
  465.                 dbra            D0,MoveChar
  466.                 move.l          D5,A0
  467.                 moveq           #0,D0
  468.                 moveq           #MaxL,D1
  469.                 movem.w         rp_cp_x(Rp),D2-D3
  470. SubBaseLine     subq.w          #1,D3                   ;This instruction will be changed by the installation
  471.                 lsl.w           #3,D4
  472.                 add.w           D4,rp_cp_x(Rp)
  473.                 moveq           #8,D5                   ;Height
  474.                 CallLib         BltTemplate
  475.                 move.l          A5,D0
  476.                 beq.S           UnLockFunc
  477.                 CallLib         UnlockLayerRom
  478. UnLockFunc      not.w           12345678                ;This instruction will be changed by the installation
  479.                 Pop             D2-D5/A2-A5
  480.                 jmp             _LVOWaitBlit(A6)
  481. FMem            dc.l            0
  482. BMem            dc.l            0                       ;Buffer to blit from
  483. TFont           dc.l            0
  484. OFont           dc.l            0
  485. TopazMisc       dcb.b           tf_SIZEOF-tf_YSize,0
  486. MyPort
  487. ;struct MsgPort {
  488. ;               struct Node {   ;struct  Node mp_Node; 
  489.                 dc.l            0       ;struct  Node *ln_Succ;
  490.                 dc.l            0       ;struct  Node *ln_Pred;
  491.                 dc.b            0       ;UBYTE   ln_Type;
  492.                 dc.b            0       ;BYTE    ln_Pri; 
  493.                 dc.l            PortName;char    *ln_Name; 
  494. ;               }
  495.                 dc.b            0       ;UBYTE   mp_Flags; 
  496.                 dc.b            0       ;UBYTE   mp_SigBit;
  497.                 dc.l            0       ;struct  Task *mp_SigTask;
  498. ;               struct List {   ;struct  List mp_MsgList;
  499.                 dc.l            0       ;struct  Node *lh_Head;
  500.                 dc.l            0       ;struct  Node *lh_Tail;
  501.                 dc.l            0       ;struct  Node *lh_TailPred;
  502.                 dc.b            0       ;UBYTE   lh_Type;
  503.                 dc.b            0       ;UBYTE   l_pad;
  504. ;               }
  505. ;}
  506. PortName        dc.b            'TurboTopaz.Port',0
  507. NFuncEnd
  508. FontData
  509. MaxL            =90                             ;Longest string MyText can write
  510. FuncMem         =NFuncEnd-NFunc
  511. CharMem         =8*256
  512. BufMem          =8*MaxL
  513.  
  514. FontTxt         dc.b            'FONT',0
  515. NameOfFunc      dc.b            $9B,'1;33mTurboTopaz ',$9B,'0;31mV1.0 by ',$9B,'3;33mPreben Nielsen',$9B,'0;31m in 1990',LF,0
  516. InstalledTxt    dc.b            ' TurboTopaz has now been installed with '
  517. FontName
  518. RemovedTxt      dc.b            ' TurboTopaz has now been removed',LF,0
  519. AlteredTxt      dc.b            " ERROR: The 'Text' Vector has been changed. Can't remove",LF,0
  520. Mismatch        dc.b            " ERROR: Baseline mismatch",LF,0
  521. CantUseProp     dc.b            " ERROR: Can't use Proportional font",LF,0
  522. Not8x8Txt       dc.b            " ERROR: Not a 8x8 font",LF,0
  523. NoFontTxt       dc.b            " ERROR: Can't open font",LF,0
  524. NoMemTxt        dc.b            " ERROR: Can't get memory",LF,0
  525. NoLibTxt        dc.b            " ERROR: Can't open "
  526. DFName          dc.b            'diskfont.library',0,0
  527. DosName         dc.b            'dos.library',0
  528. GfxName         dc.b            'graphics.library',0
  529. IconName        dc.b            'icon.library',0
  530. CONName         dc.b            'CON:40/40/500/45/This window goes away after 3 seconds',0
  531.                 EVEN
  532. DiskObj         dc.l            0
  533. DosBase         dc.l            0
  534. GfxBase         dc.l            0
  535. DFBase          dc.l            0
  536. IconBase        dc.l            0
  537. WBenchMsg       dc.l            0
  538. Handle          dc.l            0
  539.  
  540. FontAttr        dc.l            TopazName
  541.                 dc.w            TOPAZ_EIGHTY
  542.                 dc.b            FS_NORMAL,FPB_ROMFONT
  543. TopazName       dc.b            'topaz.font',0
  544.                 END
  545.  
  546.